
import java.util.Deque;
import java.util.LinkedList;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author yuri
 */
public class Nodo<T> {

    private T elemento;
    private Nodo<T> nodoPai;
    private Deque<Nodo<T>> nodosFilhos;

    public Nodo() {
        nodoPai = null;
        nodosFilhos = new LinkedList<Nodo<T>>();
    }

    public Nodo(T elemento) {
        nodoPai = null;
        nodosFilhos = new LinkedList<Nodo<T>>();
        this.elemento = elemento;
    }

    public Nodo<T> getNodoPai() {
        return nodoPai;
    }

    public Deque<Nodo<T>> getNodosFilhos() {
        return nodosFilhos;
    }

    public void adicionaNodoFilho(Nodo<T> nodo) {
        nodosFilhos.push(nodo);
    }

    public Nodo<T> removePrimeiroFilho() {
        return nodosFilhos.pollFirst();
    }

    public Nodo<T> removeUltimoFilho() {
        return nodosFilhos.pollLast();
    }

    public Nodo<T> getPrimeiroFilho() {
        return nodosFilhos.peekFirst();
    }

    public Nodo<T> getUltimoFilho() {
        return nodosFilhos.peekLast();
    }
}
